//#include"ThreadPool.hpp"
//#include"ThreadPool_V2.hpp"
//#include"ThreadPool_V3.hpp"
#include"ThreadPool_V4.hpp"



// void test_no()
// {
//     //unique_ptr时一个智能指针，使用tp管理ThreadPool<int>实例，相当于消费者
//     std::unique_ptr<ThreadPool<Task>>  tp(new ThreadPool<Task>());
//     tp->init();
//     tp->start();
//     //使用单例模式，不能使用构造函数

//     //充当生产者
//     while (true)
//     {
//         int x, y;
        
//         char op;
//         std::cout << "please Enter x> ";
//         std::cin >> x;
//         std::cout << "please Enter y> ";
//         std::cin >> y;
//         std::cout << "please Enter op(+-*/%)> ";
//         std::cin >> op;

//         Task t(x, y, op);
//         sleep(1);
//         tp->pushTask(t);
//     }
// }

void test_pattern()
{
    while (true)
    {
        int x, y;
        
        char op;
        std::cout << "please Enter x> ";
        std::cin >> x;
        std::cout << "please Enter y> ";
        std::cin >> y;
        std::cout << "please Enter op(+-*/%)> ";
        std::cin >> op;

        Task t(x, y, op);
        ThreadPool<Task>::getinstance()->pushTask(t);
        
        sleep(1);

    }
}

int main()
{
    //void test_no();//非单例模式
    test_pattern();//单例模式
}